#ifndef SHA256_H
#define SHA256_H

#include <QString>
#include <QCryptographicHash>
#include <QByteArray>

/**
 * @brief SHA256 加密工具类
 */
class SHA256 {
public:
    /**
     * @brief 计算字符串的 SHA256 哈希值（16进制字符串）
     * @param input 输入字符串
     * @return 返回 SHA256 哈希值（小写16进制）
     */
    static QString hash(const QString &input);

    /**
     * @brief 计算字节数组的 SHA256 哈希值（16进制字符串）
     * @param data 输入字节数组
     * @return 返回 SHA256 哈希值（小写16进制）
     */
    static QString hash(const QByteArray &data);

    /**
     * @brief 计算文件的 SHA256 哈希值（16进制字符串）
     * @param filePath 文件路径
     * @return 返回 SHA256 哈希值（小写16进制），如果文件不存在则返回空字符串
     */
    static QString hashFile(const QString &filePath);
};

#endif // SHA256_H
